﻿// -----------------------------------------------------------------------------
//   Document     :  EventArgs.cs
//   Description  :  
// 
//   Created by   :  Phong Linh, at 3/10/2009 10:53:19
//   Author       :  Phong Linh <langxangvn@gmail.com>
// 
//   Project      :  Core
//   Solution     :  Infrastructure
//   Copyright    :  [Type here]
//   License      :  [Type here]
//   Disclaimer   :  [Type here]
//  
//   Revision history
//   #       Date        	Changed by        		Description
//   1       3/12/2009      Phong Linh        		Initial
// -----------------------------------------------------------------------------

using System;

namespace OAuthClient
{

    /// <summary>
    /// 
    /// </summary>
    public class EventArgs<T1> : EventArgs
    {

        /// <summary>
        ///     
        /// </summary>
        public new static readonly EventArgs<T1> Empty = new EventArgs<T1>();

        /// <summary>
        /// 
        /// </summary>
        public T1 Item1 { get; protected set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1&gt;"></see> class.
        /// </summary>
        public EventArgs()
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1&gt;"></see> class.
        /// </summary>
        /// <param name="item1">The value of the data of the args.</param>
        public EventArgs(T1 item1)
        {
            Item1 = item1;
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public class EventArgs<T1, T2> : EventArgs<T1>
    {

        /// <summary>
        ///     
        /// </summary>
        public new static readonly EventArgs<T1, T2> Empty = new EventArgs<T1, T2>();

        /// <summary>
        /// 
        /// </summary>
        public T2 Item2 { get; protected set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2&gt;"></see> class.
        /// </summary>
        public EventArgs()
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1)
            : base(data1)
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1, T2 data2)
            : base(data1)
        {
            Item2 = data2;
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public class EventArgs<T1, T2, T3> : EventArgs<T1, T2>
    {

        /// <summary>
        ///     
        /// </summary>
        public new static readonly EventArgs<T1, T2, T3> Empty = new EventArgs<T1, T2, T3>();

        /// <summary>
        /// 
        /// </summary>
        public T3 Item3 { get; protected set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3&gt;"></see> class.
        /// </summary>
        public EventArgs()
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1) :
            base(data1)
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1, T2 data2)
            : base(data1, data2)
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1, T2 data2, T3 data3)
            : base(data1, data2)
        {
            Item3 = data3;
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public class EventArgs<T1, T2, T3, T4> : EventArgs<T1, T2, T3>
    {

        /// <summary>
        ///     
        /// </summary>
        public new static readonly EventArgs<T1, T2, T3, T4> Empty = new EventArgs<T1, T2, T3, T4>();

        /// <summary>
        /// 
        /// </summary>
        public T4 Item4 { get; protected set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3,T4&gt;"></see> class.
        /// </summary>
        public EventArgs()
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3,T4&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1) :
            base(data1)
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3,T4&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1, T2 data2)
            : base(data1, data2)
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1, T2, T3, T4&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1, T2 data2, T3 data3)
            : base(data1, data2, data3)
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3,T4&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1, T2 data2, T3 data3, T4 data4)
            : base(data1, data2, data3)
        {
            Item4 = data4;
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public class EventArgs<T1, T2, T3, T4, T5> : EventArgs<T1, T2, T3, T4>
    {

        /// <summary>
        ///     
        /// </summary>
        public new static readonly EventArgs<T1, T2, T3, T4, T5> Empty = new EventArgs<T1, T2, T3, T4, T5>();

        /// <summary>
        /// 
        /// </summary>
        public T5 Item5 { get; protected set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1, T2, T3, T4, T5&gt;"></see> class.
        /// </summary>
        public EventArgs()
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3,T4,T5&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1) :
            base(data1)
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3,T4,T5&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1, T2 data2)
            : base(data1, data2)
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3,T4,T5&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1, T2 data2, T3 data3)
            : base(data1, data2, data3)
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3,T4,T5&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1, T2 data2, T3 data3, T4 data4)
            : base(data1, data2, data3, data4)
        { }

        /// <summary>
        /// Initializes a new instance of the <see cref="EventArgs&lt;T1,T2,T3,T4,T5&gt;"></see> class.
        /// </summary>
        /// <param name="data">The value of the data of the args.</param>
        public EventArgs(T1 data1, T2 data2, T3 data3, T4 data4, T5 data5)
            : base(data1, data2, data3, data4)
        {
            Item5 = data5;
        }
    }
}
